package com.suiwei.base;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.ResourceUtils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/**
 * @author suiwei
 * @date 2022-10-25 11:40
 */
public class Files {
    /**
     * ResourceUtils工具类，可以获取resources下的文件，但是打成jar包后，就获取不到了
     */
    @Test
    void  testResourceUtils() throws FileNotFoundException {
        //File file = ResourceUtils.getFile("classpath:templates/b_dfd.txt");
        File files = ResourceUtils.getFile("classpath:templates");
        if(files.exists()){
            File[] fileList = files.listFiles();
            if(fileList != null){
                for(File childFile:fileList){
                    System.out.println(childFile.getName());
                }
            }
        }


    }

    /**
     * ClassPathResource，用于打成jar包后获取文件的方法
     * 读取如果有乱码，则修改maven打包配置，添加nonFilteredFileExtensions
     * File.separator 是系统默认的文件分隔符号，在 UNIX 系统上，此字段的值为 '/'在Windows 系统上，它为 '\' 屏蔽了系统的区别。保证了在任何系统下不会出错。
     *
     */
    @Test
    void testClassPathResource() throws IOException {
        ClassPathResource resource = new ClassPathResource("templates"+File.separator +"a.txt");
        // 获取文件流
        InputStream inputStream = resource.getInputStream();
        // 获取文件
        File file = resource.getFile();
        //getPath()得到的是构造file的时候的路径。输入的是相对路径，就输出相对路径，传入的是绝对路径，就返回绝对路径
        System.out.println(file.getPath());
        //getAbsolutePath()得到的是绝对路径
        System.out.println(file.getAbsolutePath());


    }


}
